/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package org.mybeans;

import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import javax.swing.JOptionPane;

/**
 *
 * @author avbravo
 */
public class RecargoMensualBeans {
static int Anio;
    static private String Id;
    static String TipoId;
    static String IdRegimen;
    static int IdRecibo;
    static double RecargoActual;
    static double NumeroPorcentaje;
    static String IdMunicipio;
    static String IdUsuario;
    static Date Fecha;
    Sesion sesion;
    static String Mes;

     static private int NumeroRegistrosLista = -1;
    static List<String> ListaId = new ArrayList<String>();
    static List<String> ListaTipoId = new ArrayList<String>();
    static List<String> ListaIdRegimen = new ArrayList<String>();
    static List<String> ListaRegimen = new ArrayList<String>();
    static List<Double> ListaRecargoActual = new ArrayList<Double>();
    static List<Double> ListaNumeroPorcentaje= new ArrayList<Double>();

    public static List<String> getListaId() {
        return ListaId;
    }

    public static void setListaId(List<String> ListaId) {
        RecargoMensualBeans.ListaId = ListaId;
    }

    public static List<String> getListaIdRegimen() {
        return ListaIdRegimen;
    }

    public static void setListaIdRegimen(List<String> ListaIdRegimen) {
        RecargoMensualBeans.ListaIdRegimen = ListaIdRegimen;
    }

    public static List<Double> getListaNumeroPorcentaje() {
        return ListaNumeroPorcentaje;
    }

    public static void setListaNumeroPorcentaje(List<Double> ListaNumeroPorcentaje) {
        RecargoMensualBeans.ListaNumeroPorcentaje = ListaNumeroPorcentaje;
    }

    

    public static List<Double> getListaRecargoActual() {
        return ListaRecargoActual;
    }

    public static void setListaRecargoActual(List<Double> ListaRecargoActual) {
        RecargoMensualBeans.ListaRecargoActual = ListaRecargoActual;
    }

    public static List<String> getListaRegimen() {
        return ListaRegimen;
    }

    public static void setListaRegimen(List<String> ListaRegimen) {
        RecargoMensualBeans.ListaRegimen = ListaRegimen;
    }

    public static List<String> getListaTipoId() {
        return ListaTipoId;
    }

    public static void setListaTipoId(List<String> ListaTipoId) {
        RecargoMensualBeans.ListaTipoId = ListaTipoId;
    }

    public static int getNumeroRegistrosLista() {
        return NumeroRegistrosLista;
    }

    public static void setNumeroRegistrosLista(int NumeroRegistrosLista) {
        RecargoMensualBeans.NumeroRegistrosLista = NumeroRegistrosLista;
    }
    
    
    
    
    public static double getNumeroPorcentaje() {
        return NumeroPorcentaje;
    }

    public static void setNumeroPorcentaje(double NumeroPorcentaje) {
        RecargoMensualBeans.NumeroPorcentaje = NumeroPorcentaje;
    }

    public static int getAnio() {
        return Anio;
    }

    public static void setAnio(int Anio) {
        RecargoMensualBeans.Anio = Anio;
    }

    public static Date getFecha() {
        return Fecha;
    }

    public static void setFecha(Date Fecha) {
        RecargoMensualBeans.Fecha = Fecha;
    }

    public static String getId() {
        return Id;
    }

    public static void setId(String Id) {
        RecargoMensualBeans.Id = Id;
    }

    public static String getIdMunicipio() {
        return IdMunicipio;
    }

    public static void setIdMunicipio(String IdMunicipio) {
        RecargoMensualBeans.IdMunicipio = IdMunicipio;
    }

    public static int getIdRecibo() {
        return IdRecibo;
    }

    public static void setIdRecibo(int IdRecibo) {
        RecargoMensualBeans.IdRecibo = IdRecibo;
    }

    public static String getIdRegimen() {
        return IdRegimen;
    }

    public static void setIdRegimen(String IdRegimen) {
        RecargoMensualBeans.IdRegimen = IdRegimen;
    }

    public static String getIdUsuario() {
        return IdUsuario;
    }

    public static void setIdUsuario(String IdUsuario) {
        RecargoMensualBeans.IdUsuario = IdUsuario;
    }

    public static String getMes() {
        return Mes;
    }

    public static void setMes(String Mes) {
        RecargoMensualBeans.Mes = Mes;
    }

   

  

    public static double getRecargoActual() {
        return RecargoActual;
    }

    public static void setRecargoActual(double RecargoActual) {
        RecargoMensualBeans.RecargoActual = RecargoActual;
    }

    public static String getTipoId() {
        return TipoId;
    }

    public static void setTipoId(String TipoId) {
        RecargoMensualBeans.TipoId = TipoId;
    }

    public RecargoMensualBeans() {
        sesion = new Sesion();
    }
    
    
    
    public boolean VerificarRecargoMensual() {
        try {
            if (sesion.Conectar() == false) {
                JOptionPane.showMessageDialog(null, "No se pudo establecer la conexion", "Mensaje", JOptionPane.INFORMATION_MESSAGE);
                return false;
            }
            String sql = "select * from recargomensual where idmunicipio=? and anio =? and id=? and tipoid =? and idregimen=? ";

            PreparedStatement psquery = sesion.con.prepareStatement(sql);
            psquery.setString(1, getIdMunicipio());
            psquery.setInt(2, getAnio());//------
            psquery.setString(3, getId());
            psquery.setString(4, getTipoId());
            psquery.setString(5, getIdRegimen());

            ResultSet rs = psquery.executeQuery();
            rs.next();
            int x = rs.getRow();
            setNumeroPorcentaje(0);
            setRecargoActual(0.0);

            if (x != 0) {
                setNumeroPorcentaje(rs.getInt("numeroporcentaje"));
                setRecargoActual(rs.getDouble("recargoactual"));
                sesion.con.close();
                return true;

            } else {
                sesion.con.close();
                return false;
            }

        } catch (Exception ex) {
 
            JOptionPane.showMessageDialog(null, "Error " + ex.getMessage(), "RecargoMensualBeans.VerificarRecargoMensual()", JOptionPane.ERROR_MESSAGE);
        }
        return false;
    }

    /*
     *Agregar una morosidad 
     * 
     */
    public boolean Agregar() {
        try {
            if (sesion.Conectar() == false) {
                JOptionPane.showMessageDialog(null, "No se pudo establecer la conexion", "Mensaje", JOptionPane.INFORMATION_MESSAGE);
                return false;
            }
            String sql = "INSERT into recargomensual  VALUES(?,?,?,?,?,?,?)";
            PreparedStatement prest = sesion.con.prepareStatement(sql);

            prest.setInt(1, getAnio());
            prest.setString(2, getId());
            prest.setString(3, getTipoId());
            prest.setString(4, getIdRegimen());
            prest.setDouble(5, getRecargoActual());
            prest.setString(6, sesion.getIdmunicipio());
            prest.setDouble(7, getNumeroPorcentaje());

            int count = prest.executeUpdate();
           
            sesion.con.close();
            //JOptionPane.showMessageDialog(null, "Cierre Mensual guardado exitosamente", "Mensaje", JOptionPane.INFORMATION_MESSAGE);
            return true;

        } catch (Exception ex) {
            System.out.println("Error" + ex);
            JOptionPane.showMessageDialog(null, "Error " + ex.getMessage(), "RecargoMensualBeans.Agregar() ", JOptionPane.ERROR_MESSAGE);
        }
        return false;
    }

    
     public boolean AgregarCierre() {
        try {
            if (sesion.Conectar() == false) {
                JOptionPane.showMessageDialog(null, "No se pudo establecer la conexion", "Mensaje", JOptionPane.INFORMATION_MESSAGE);
                return false;
            }
            String sql = "INSERT into cierrerecargomensual  VALUES(?,?,?,?,?,?,?,?)";
            PreparedStatement prest = sesion.con.prepareStatement(sql);

            prest.setInt(1, getAnio());
            prest.setString(2,getMes());
            prest.setString(3, getId());
            prest.setString(4, getTipoId());
            prest.setString(5, getIdRegimen());
            prest.setDouble(6, getRecargoActual());
            prest.setString(7, sesion.getIdmunicipio());
            prest.setDouble(8, getNumeroPorcentaje());

            int count = prest.executeUpdate();

            sesion.con.close();
            //JOptionPane.showMessageDialog(null, "Cierre Mensual guardado exitosamente", "Mensaje", JOptionPane.INFORMATION_MESSAGE);
            return true;

        } catch (Exception ex) {
            System.out.println("Error" + ex);
            JOptionPane.showMessageDialog(null, "Error " + ex.getMessage(), "RecargoMensualBeans.AgregarCierre() ", JOptionPane.ERROR_MESSAGE);
        }
        return false;
    }

    /*
     *actualiza el registro de morosidad mensual 
     * 
     */
    public boolean Actualizar() {
        try {
            if (sesion.Conectar() == false) {
                JOptionPane.showMessageDialog(null, "No se pudo establecer la conexion", "Mensaje", JOptionPane.INFORMATION_MESSAGE);
                return false;
            }
            String sql = "update recargomensual  set numeroporcentaje = ? where anio =? and id = ? and tipoid = ? and idregimen = ? and idmunicipio = ?";
            PreparedStatement prest = sesion.con.prepareStatement(sql);
            prest.setDouble(1, getNumeroPorcentaje());
            prest.setInt(2, getAnio());
            prest.setString(3, getId());
            prest.setString(4, getTipoId());
            prest.setString(5, getIdRegimen());
            prest.setString(6, sesion.getIdmunicipio());

            int count = prest.executeUpdate();
            String sqlSaldoActual = "update recargomensual  set recargoactual = ? where anio =? and id = ? and tipoid = ? and idregimen = ? and idmunicipio = ?";
            PreparedStatement prest2 = sesion.con.prepareStatement(sqlSaldoActual);
            prest2.setDouble(1, getRecargoActual());
            prest2.setInt(2, getAnio());
            prest2.setString(3, getId());
            prest2.setString(4, getTipoId());
            prest2.setString(5, getIdRegimen());
            prest2.setString(6, sesion.getIdmunicipio());

            prest2.executeUpdate();
            sesion.con.close();
            return true;

        } catch (Exception ex) {
            System.out.println("Error" + ex);
            JOptionPane.showMessageDialog(null, "Error " + ex.getMessage(), "RecargoMensualBeans.Actualizar() ", JOptionPane.ERROR_MESSAGE);
        }
        return false;
    }
    
    
      /*
     * 
     *Carga la informacion de recargo mensual en las listas 
     * 
     */
    public boolean CargarListadoRecargoMensual(String sql) {
        try {
            NumeroRegistrosLista = -1;
            RemoverElementosLista();

            if (sesion.Conectar() == false) {
                JOptionPane.showMessageDialog(null, "No se pudo establecer la conexion", "Mensaje", JOptionPane.INFORMATION_MESSAGE);
                return false;
            }

            String sqlquery = sql;
            PreparedStatement psquery = sesion.con.prepareStatement(sqlquery);
            ResultSet rs = psquery.executeQuery();
            rs.next();
            int x = rs.getRow();
            if (x == 0) {
//                JOptionPane.showMessageDialog(null, "No existen registros de contribuyentes con esa cedula", "Mensaje", JOptionPane.INFORMATION_MESSAGE);
                return false;
            }
            ListaId.add(rs.getString("id"));
            ListaTipoId.add(rs.getString("tipoid"));
            ListaIdRegimen.add(rs.getString("idregimen"));
            ListaRegimen.add(rs.getString("regimen"));
            ListaRecargoActual.add(rs.getDouble("recargoactual"));
            ListaNumeroPorcentaje.add(rs.getDouble("numeroporcentaje"));

            NumeroRegistrosLista++;
            while (rs.next()) {
                ListaId.add(rs.getString("id"));
                ListaTipoId.add(rs.getString("tipoid"));
                ListaIdRegimen.add(rs.getString("idregimen"));
                ListaRegimen.add(rs.getString("regimen"));
                ListaRecargoActual.add(rs.getDouble("recargoactual"));
                ListaNumeroPorcentaje.add(rs.getDouble("numeroporcentaje"));
                NumeroRegistrosLista++;
            }
            sesion.con.close();
            return true;
        } catch (Exception ex) {
            JOptionPane.showMessageDialog(null, "Error " + ex.getMessage(), "CargarListadoMorosidadMensual()", JOptionPane.ERROR_MESSAGE);

        }
        return false;
    }
    
     public void RemoverElementosLista() {
        ListaId.removeAll(ListaId);
        ListaTipoId.removeAll(ListaTipoId);
        ListaIdRegimen.removeAll(ListaIdRegimen);
        ListaRegimen.removeAll(ListaRegimen);
        ListaRecargoActual.removeAll(ListaRecargoActual);
        ListaNumeroPorcentaje.removeAll(ListaNumeroPorcentaje);
    }


        public void ActualizarRecargoAnulado() {
        try {
            if (sesion.Conectar() == false) {
                JOptionPane.showMessageDialog(null, "No se pudo establecer la conexion", "Mensaje", JOptionPane.INFORMATION_MESSAGE);
                return;
            }
            String sql = "update recargomensual set recargoactual=?  where idmunicipio=?  and anio=? and idregimen =? and id=? and tipoid =? ";
            PreparedStatement prest = sesion.con.prepareStatement(sql);
            prest.setDouble(1,this.RecargoActual);
            prest.setString(2, getIdMunicipio());
            prest.setInt(3, getAnio());
            prest.setString(4, getIdRegimen());
            prest.setString(5, getId());
            prest.setString(6, getTipoId());

            int count = prest.executeUpdate();
            sesion.con.close();

        } catch (Exception ex) {
            sesion.MostrarMensajeError("Error ", "Clase: VigenciasExpiradasBeans.java\nActualizarVigenciaAnulada()\n " + ex.getMessage().toString());
        }
        return;
    }
}
